package com.ruoyi.web.controller.business;

import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.ApiLoginUser;
import com.ruoyi.system.domain.PersonChangeUsername;
import com.ruoyi.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Api("个人中心业务类API接口")
@RestController
@RequestMapping("/person")
public class ApiPersonController extends BaseController {


    @Autowired
    private ISysUserService userService;

    /**
     * 获取验证码
     *
     * @param username 登录用户
     * @return 结果
     */
    @Anonymous
    @ApiOperation("获取验证码")
    @GetMapping("/verificationCode/{username}")
    public AjaxResult login(@PathVariable String username) {
        System.out.println(username);
        return AjaxResult.success();
    }

    /**
     * 邮箱验证
     *
     * @param loginBody 登录信息
     * @return 结果
     */
    @Anonymous
    @ApiOperation("邮箱验证")
    @PostMapping("/forgotEmail")
    public AjaxResult forgotEmail(@RequestBody LoginBody loginBody) {
        if (null != loginBody.getCode() && "000000".equals(loginBody.getCode())) {
            return AjaxResult.success();
        } else {
            return AjaxResult.error("验证码错误！");
        }
    }

    /**
     * 找回密码 - 设置新的账户密码
     *
     * @param apiLoginUser 登录信息
     * @return 结果
     */
    @Anonymous
    @ApiOperation("找回密码 - 设置新的账号密码")
    @PostMapping("/changePassword")
    public AjaxResult changePassword(@RequestBody ApiLoginUser apiLoginUser) {
        if(!apiLoginUser.getPassword().equals(apiLoginUser.getPasswordVerify())){
            return AjaxResult.error("两次输入密码不一致");
        }
        if (userService.resetUserPwd(apiLoginUser.getUsername(), SecurityUtils.encryptPassword(apiLoginUser.getPassword())) > 0) {
            return success();
        }
        return AjaxResult.success();
    }

    /**
     * 个人中心 - 更改电子邮件
     *
     * @param apiLoginUser 登录信息
     * @return 结果
     */
    @Anonymous
    @ApiOperation("个人中心 - 更改电子邮件")
    @PostMapping("/changeUsername")
    public AjaxResult changeUsername(@RequestBody PersonChangeUsername apiLoginUser) {
        userService.changeUsername(apiLoginUser.getOldUsername(), apiLoginUser.getNewUsername());
        return AjaxResult.success();
    }

    /**
     * 个人中心 - 获取隐私说明接口
     *
     * @return 结果
     */
    @Anonymous
    @ApiOperation("个人中心 - 获取隐私说明接口")
    @GetMapping("getPrivacyStatement")
    public AjaxResult PrivacyStatement() {
        return AjaxResult.success("获取成功","用户协议：只要你使用该软件，该授权协议就持续有效，除非由于你不遵守该协议的条款而被终止使用权利。一旦协议终止，你必须同意毁掉你所有的该软件的所有拷贝。");
    }

    /**
     * 个人中心 - 联系我们
     *
     * @return 结果
     */
    @Anonymous
    @ApiOperation("个人中心 - 联系我们接口")
    @GetMapping("contactUs")
    public AjaxResult contactUs() {

        return AjaxResult.success("获取成功","公司客服电话：XX-XXXXXX-XXXX");
    }

    /**
     * 个人中心 - 退出登录
     *
     * @return 结果
     */
    @Anonymous
    @ApiOperation("个人中心 - 退出登录")
    @GetMapping("logout")
    public AjaxResult logout() {
        return AjaxResult.success("退出成功");
    }

    /**
     * 个人中心 - 编辑个人数据接口
     *
     * @return 结果
     */
    @Anonymous
    @ApiOperation("个人中心 - 编辑个人数据接口")
    @PutMapping("updateUser")
    public AjaxResult updateUser(@RequestBody SysUser user) {
        userService.updateUser(user);
        return AjaxResult.success("修改成功");
    }


}
